﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CamadaDeNegocios.Controllers;

namespace FinanFlex
{
    public partial class ListaPessoa : Form
    {
        public ListaPessoa()
        {
            InitializeComponent();
            this.CarregarDados();
            this.EstruturaLista();
        }

        /// <summary>
        /// Método para carregar os dados da lista
        /// </summary>
        /// <param name="pFiltro">Filtro a ser executado na lista</param>
        private void CarregarDados(string pFiltro = "")
        {
            DataTable _tb = PessoaController.Lista();

            DataView _dv = new DataView(_tb, pFiltro, "", DataViewRowState.CurrentRows);

            this.gridListaPessoas.DataSource = _dv;
        }

        /// <summary>
        /// Monta a estrutura que da lsita
        /// </summary>
        private void EstruturaLista()
        {
            foreach (DataGridViewColumn _coluna in this.gridListaPessoas.Columns)
            {
                switch (_coluna.Name)
                {
                    case "IdPessoa":
                        _coluna.Visible = false;
                        break;

                    case "RazaoSocial":
                        _coluna.HeaderText = "Razão Social";
                        _coluna.Width = 250;
                        break;

                    case "NomeFantasia":
                        _coluna.HeaderText = "Nome Fantasia";
                        _coluna.Width = 250;
                        break;

                    case "Telefone":
                        _coluna.HeaderText = "Telefone Fixo";
                        _coluna.Width = 120;
                        break;

                    case "Celular":
                        _coluna.HeaderText = "Telefone Móvel";
                        _coluna.Width = 120;
                        break;

                    case "Email":
                        _coluna.Width = 300;
                        break;

                    case "HomePage":
                        _coluna.Width = 300;
                        break;

                    default:
                        _coluna.Visible = false;
                        break;
                }
            }
        }

        /// <summary>
        /// Edita o registro selecionado na lista
        /// </summary>
        private void Editar()
        {
            // verifica se há algum registro selecionado
            if (this.gridListaPessoas.SelectedRows.Count > 0)
            {
                // instancia o formulário pessoa
                Pessoa _frmPessoa = new Pessoa();

                // verifica se o registro selecionado é uma pessoa fisica
                if (this.gridListaPessoas.SelectedRows[0].Cells["Pessoa"].Value.ToString().Equals("Fisica"))
                {
                    // carrega os dados do registro selecionado
                    _frmPessoa.PessoaSelecionada = PessoaFisicaController.BuscarPorId(Convert.ToInt16(this.gridListaPessoas.SelectedRows[0].Cells["IdPessoa"].Value));
                }
                else
                {
                    // carrega os dados do registro selecionado
                    _frmPessoa.PessoaSelecionada = PessoaJuridicaController.BuscarPorId(Convert.ToInt16(this.gridListaPessoas.SelectedRows[0].Cells["IdPessoa"].Value));
                }

                // exibe o form
                _frmPessoa.ShowDialog();

                // verifica o resultado retornado pelo formulário para atualizar os dados
                if (_frmPessoa.DialogResult == System.Windows.Forms.DialogResult.OK)
                    this.CarregarDados();
            }
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            Pessoa _frmPessoa = new Pessoa();
            _frmPessoa.ShowDialog();

            if (_frmPessoa.DialogResult == System.Windows.Forms.DialogResult.OK)
                this.CarregarDados();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            this.Editar();
        }

        private void gridListaPessoas_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == 1)
            {
                if (e.RowIndex % 2 == 0)
                    this.gridListaPessoas.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.WhiteSmoke;
                else
                    this.gridListaPessoas.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
            }
        }

        private void gridListaPessoas_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            this.Editar();
        }
    }
}
